// 倒计时逻辑函数

/**
 * 核心逻辑：每隔1s减一
 * 技术点： 定时器  time--
 * 具体用啥？ vueUse  useIntervalFn
 */
import { ref, computed } from 'vue'
import { useIntervalFn } from '@vueuse/core'
import dayjs from 'dayjs'

function useCountDown () {
  // 计时响应式数据
  const time = ref(0)
  // 格式化操作
  // xx分xx秒  dayjs  unix() 处理成秒  format('mm分ss秒') 格式化方法
  // 每个一秒钟 执行一下your function
  const formatTime = computed(() => {
    return dayjs.unix(time.value).format('mm分ss秒')
  })
  // 定时器vueuse函数
  const { pause, resume } = useIntervalFn(() => {
    // time: 响应式的数据 用来显示当前计数
    // start: 方法 正式开启倒计时  调用这个函数的时候决定当前倒计时的初始值是多少
    // stop: 方法 停止倒计时
    /* your function */
    if (time.value === 0) {
      return pause()
    }
    time.value--
  }, 1000)
  // 开始计时
  function start (startTime) {
    // 初始化时间
    time.value = startTime
    resume() // 开始
  }
  // 停止计时
  function stop () {
    pause() // 停止
  }
  return {
    time,
    start,
    stop,
    formatTime
  }
}

export default useCountDown
